import 'package:decimal/decimal.dart';

/// @Title  字符串转数字的扩展类
/// @Author: bryce
/// @CreateDate: 2024年05月22日10:22:22
extension StringToNumExtension on String? {
  double parseToDouble({double defaultValue = 0.0}) {
    final value = this;
    if (value == null || value.isEmpty) return defaultValue;
    return double.tryParse(value) ?? defaultValue;
  }

  int parseToInt({int defaultValue = 0}) {
    final value = this;
    if (value == null || value.isEmpty) return defaultValue;
    return (num.tryParse(value) ?? defaultValue).toInt();
  }

  num parseToNum({num defaultValue = 0}) {
    final value = this;
    if (value == null || value.isEmpty) return defaultValue;
    return num.tryParse(value) ?? defaultValue;
  }

  Decimal parseToDecimal({Decimal? defaultValue}) {
    defaultValue??=Decimal.zero;
    final value = this;
    if (value == null || value.isEmpty) return defaultValue;
    return Decimal.tryParse(value) ?? defaultValue;
  }

  /// 数字是否是正数
  /// isZeroPositive: 0是否判为正数
  bool isPositiveNum({bool isZeroPositive = true, num defaultValue = 0}) {
    return parseToNum(defaultValue: defaultValue) >= 0;
  }
}
